package com.fgba.express.core.controller.handle;

import com.fgba.express.core.entity.BaseEntity;
import com.fgba.express.core.dto.BaseDto;

public interface ControllerModelMethod<T extends BaseEntity,D extends BaseDto> {
    /**
     * 模板方法：保存前执行
     *
     * @param entity
     * @throws Exception
     */
    default void beforeSave(T entity) throws Exception {
    }


    /**
     * 模板方法：保存前执行
     *
     * @param model
     * @throws Exception
     */
    default void beforeSave(D model) throws Exception {
    }

    /**
     * 模板方法：在保存后执行
     *
     * @param model
     */
    default void afterSave(D model) throws Exception {

    }
    /**
     * 模板方法：保存前执行
     *
     * @param entity
     * @throws Exception
     */
    default void beforeUpdate(T entity) throws Exception {
    }


    /**
     * 模板方法：保存前执行
     *
     * @param model
     * @throws Exception
     */
    default void beforeUpdate(D model) throws Exception {
    }

    /**
     * 模板方法：在保存后执行
     *
     * @param model
     */
    default void afterUpdate(D model) throws Exception {

    }
    /**
     * 模板方法：在加载后执行
     *
     * @param entity
     */
    default void afterEdit(T entity) throws Exception {

    }
    /**
     * 模板方法：在加载后执行
     *
     * @param model
     */
    default void afterEdit(D model) throws Exception {

    }


}
